home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / COMPILER / SATHER / !Sather / Library / Containrs / sa / multimap < prev    next >
Text File  |  1996-04-09  |  3KB  |  70 lines

  1. ---------------------------> Sather 1.1 source file <--------------------------
  2. -- Copyright (C) International Computer Science Institute, 1994.COPYRIGHT    --
  3. -- NOTICE: This code is provided "AS IS" WITHOUT ANY WARRANTY and is subject --
  4. -- to the terms of the SATHER LIBRARY GENERAL PUBLIC LICENSE contained in    --
  5. -- the file "Doc/License" of the Sather distribution.  The license is also   --
  6. -- available from ICSI, 1947 Center St., Suite 600, Berkeley CA 94704, USA.  --
  7. --------> Please email comments to "sather-bugs@icsi.berkeley.edu". <----------
  8. -- Author: Holger Klawitter <holger@icsi.berkeley.du>
  9. -- (gomes) Renamed classes, routines, reorganized code inclusion
  10. --                 added a lot of  functionality 
  11. --=============================================================================
  12. abstract class $RO_MULTIMAP{K,E} < $CONTAINER{E} is
  13.    -- A mapping form K -> bags of E. A multimap binds elements of type
  14.    -- `E' to keys of type `K'.  In contrast to $MAP{K,E} there can be
  15.    -- more than one element be bound to a key.  It is essentially a
  16.    -- one-to-many mapping, that allows for repetitions. i.e.
  17.    -- it is a map from K->$BAG{E}
  18.    
  19.    has_ind(k: K): BOOL;
  20.    -- Returns true if the map has the element "k"
  21.    
  22.    has_elt(e: E): BOOL;
  23.    -- Return true if the map has the element "e"
  24.    
  25.    n_inds: INT;
  26.    -- Returns the number of keys which are bound.
  27.  
  28.    ind!: K;
  29.    -- Yields all keys which are bound in unspecifierd order.
  30.  
  31.    target!(once k:K): E;
  32.    -- Yields all elements wich are bound to 'k' in unspecified
  33.    -- order.
  34.  
  35.    targets(k: K): $BAG{E};
  36.    -- Returns all the targets of the element "k"
  37.    
  38.    n_targets(k:K): INT;
  39.    -- Returns the number of elements bound to the index `k'.
  40.  
  41.    pair!: TUP{K,E};
  42.    -- Yields all bindings in unpecified order.
  43.  
  44.    size: INT;
  45.    -- Returns the number of bindings in the dicitonary.
  46.    
  47.    equals(m: $RO_MULTIMAP{K,E}): BOOL;
  48.    -- Return true if all the key-value pairs are found in the same
  49.    -- numbers in "m"
  50.    
  51. end;
  52. --=============================================================================
  53. abstract class $MULTIMAP{K,E} < $RO_MULTIMAP{K,E} is
  54.    -- A multimap that can be modified
  55.  
  56.    aset(k:K,e:E);
  57.    -- Binds the element 'e' to the key 'k'. There may me more
  58.    -- than one element bound to one key.
  59.    
  60.    delete(k:K,e:E);
  61.    -- Removes the binding between element 'e' and the key 'k'.
  62.    -- Does nothing if there is no such binding.
  63.  
  64.    delete(k:K);
  65.    -- Removes all bindings to `k'. Does nothing, if there
  66.    -- is no such binding.
  67.  
  68. end; -- $MULTIMAP{K,E}
  69. --=============================================================================
  70.